widget: fix GtkLabelAccessible NULL links.
authorAlban Browaeys <prahal@yahoo.com>
Sat, 14 May 2016 21:57:28 +0000 (23:57 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 15 May 2016 14:24:34 +0000 (10:24 -0400)
Fix testsuite/a11y/about.ui GtkAboutDialog :
"CRITICAL **: atk_hyperlink_get_start_index: assertion 'ATK_IS_HYPERLINK (link)' failed"
That is set widget->priv->accessible as soon as accessible object is generated.

When accessible object is created accessible->priv->widget is set,
if widget->priv->accessible is not , then _gtk_label_accessible_update_links
exits early, thus without creating the links on the accessible side.
(This as it checks for the widget to have the accessible set before proceeding).

https://bugzilla.gnome.org/show_bug.cgi?id=766458

gtk/gtkwidget.c

index c14e127be6ae9efdf5fc99b4d4bee09d95a6934b..36752b4fdb93711028a6ab16c991a56492e21994 100644 (file)
@@ -13417,6 +13417,8 @@ gtk_widget_real_get_accessible (GtkWidget *widget)
 
           if (priv->accessible_role != ATK_ROLE_INVALID)
             atk_object_set_role (accessible, priv->accessible_role);
+
+          widget->priv->accessible = accessible;
         }
       else
         {
@@ -13426,6 +13428,8 @@ gtk_widget_real_get_accessible (GtkWidget *widget)
           if (priv->accessible_role != ATK_ROLE_INVALID)
             atk_object_set_role (accessible, priv->accessible_role);
 
+          widget->priv->accessible = accessible;
+
           atk_object_initialize (accessible, widget);
 
           /* Set the role again, since we don't want a role set
@@ -13436,7 +13440,6 @@ gtk_widget_real_get_accessible (GtkWidget *widget)
             atk_object_set_role (accessible, priv->accessible_role);
         }
 
-      widget->priv->accessible = accessible;
     }
 
   return accessible;